package co.fitstart.admin.service;

import java.util.List;

import com.demo2do.core.support.Page;

import co.fitstart.entity.market.CreditRecord;
import co.fitstart.entity.market.MarketCourse;
import co.fitstart.entity.market.MarketCourseRound;
import co.fitstart.entity.market.MarketWechatImage;
import co.fitstart.entity.market.template.MarketBatchCoursewareTemplate;
import co.fitstart.entity.market.template.MarketCoursewareTemplate;
import co.fitstart.entity.market.template.MarketDailyCoursewareTemplate;
import co.fitstart.entity.market.template.MarketMonthlyCoursewareTemplate;
import co.fitstart.entity.user.User;

/**
 * 
 * @author dan
 *
 */
public interface MarketCoursewareService {
    
    /**
     * 
     * @param page
     * @return
     */
    public List<MarketCourse> listMarketCourse(Page page);
    
    /**
     * 
     * @param courseId
     * @return
     */
    public MarketCourse loadMarketCourse(Long courseId);
    
    /**
     * 
     * @param marketCourse
     * @return
     */
    public List<MarketMonthlyCoursewareTemplate> listMonthly(MarketCourse marketCourse);
    
    /**
     * 
     * @param marketCourse
     */
    public void createMarketCourse(MarketCourse marketCourse);
    
    /**
     * 
     * @param marketCourse
     */
    public void editMarketCourse(MarketCourse marketCourse);
    
    /**
     * 
     * @param marketCourse
     */
    public void deleteMarketCourse(MarketCourse marketCourse);
    
    /**
     * 
     * @param user
     * @return
     */
    public MarketCourseRound loadMarketCourseRound(User user);
    
    /**
     * 
     * @param course
     * @param months
     * @return
     */
    public MarketMonthlyCoursewareTemplate loadMarketMonthlyCoursewareTemplate(MarketCourse course, int months);
    
    /**
     * 
     * @param batchId
     * @return
     */
    public MarketBatchCoursewareTemplate loadMarketBatchCoursewareTemplate(Long batchId);
    
    /**
     * 
     * @param course
     * @param weeks
     * @return
     */
    public MarketBatchCoursewareTemplate loadMarketBatchCoursewareTemplate(MarketMonthlyCoursewareTemplate monthly, int weeks);
    
    /**
     * 
     * @param batchCoursewareTemplate
     */
    public void editMarketBatchCoursewareTemplate(MarketBatchCoursewareTemplate batchCoursewareTemplate);
    
    /**
     * 
     * @param dailyId
     * @return
     */
    public MarketDailyCoursewareTemplate loadMarketDailyCoursewareTemplate(Long dailyId);
    
    /**
     * 
     * @param coursewareId
     * @return
     */
    public MarketCoursewareTemplate loadMarketCoursewareTemplate(Long coursewareId);
    
    /**
     * 
     * @param dailyCoursewareTemplate
     */
    public void editMarketDailyCoursewareTemplate(MarketDailyCoursewareTemplate dailyCoursewareTemplate);
    
    /**
     * 
     * @param coursewareTemplate
     * @param dailyCoursewareTemplate
     */
    public void createMarketCoursewareTemplate(MarketCoursewareTemplate coursewareTemplate, MarketDailyCoursewareTemplate dailyCoursewareTemplate);

    /**
     * 
     * @param coursewareTemplate
     */
    public void editMarketCoursewareTemplate(MarketCoursewareTemplate coursewareTemplate);
    
    /**
     * 
     * @param coursewareTemplate
     */
    public void deleteMarketCoursewareTemplate(MarketCoursewareTemplate coursewareTemplate);
    
    /**
     * 
     * @param user
     * @return
     */
    public List<CreditRecord> listCreditRecord(User user);
    
    /**
     * 
     * @param course
     * @return
     */
    public MarketWechatImage getMarketWechatImage(MarketCourse course);
    
    /**
     * 
     * @param monthlies
     */
    public void editMonthlyCoursewareTemplates(List<String> monthlies);

}
